#pragma once

#include <windows.h>
#include <exception>
#include <string>
#include <sstream>

class GraphicsException : public std::exception
{
public:
	GraphicsException(std::string str) : std::exception(str.c_str()) { }
};

class GraphicsCapabilityException : public GraphicsException
{
public:
	GraphicsCapabilityException(std::string str) : GraphicsException(str.c_str()) { }
};

class GraphicsExecutionException : public GraphicsException
{
public:
	GraphicsExecutionException(std::string str) : GraphicsException(str.c_str()) { }
};

class ShaderProgramException : public std::exception
{
public:
	ShaderProgramException(std::string str) : std::exception(str.c_str()) { }
};

class ShaderProgramCompilationException : public ShaderProgramException
{
public:
	ShaderProgramCompilationException(std::string str) : ShaderProgramException(str.c_str()) { }
};

class DataException : public std::exception
{
public:
	DataException(std::string str) : std::exception(str.c_str()) { }
};

class FileException : public std::exception
{
public:
	FileException(std::string str) : std::exception(str.c_str()) { }
};
